package com.aos.erp.schools.model.student.ro.student;

import com.aos.erp.schools.cutils.validator.ValidatorUtils;
import com.aos.erp.schools.enums.student.BindingWechat;
import com.aos.erp.schools.enums.student.DrivingType;
import com.aos.erp.schools.enums.student.Residence;
import com.aos.erp.schools.model.student.ro.userId.UserRo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Auther: chb
 * @Date: 2018/10/31 17:31
 * @Description:
 */
@Data
public class AddStudentRo extends UserRo implements Serializable {

    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名", required = true, dataType = "String")
    @NotBlank(message="姓名不能为空")
    private String name;

    /**
     * 性别   男:1;女:2;  未知：3
     */
    @ApiModelProperty(value = "性别   男:1;女:2; ", required = false, dataType = "Integer")
    @NotNull(message = "性别不能为空")
    private String sex;

    //民族
    private String  nation;


    /**
     * 出生日期
     */
    @ApiModelProperty(value = "出生日期", required = false, dataType = "String")
    @NotBlank(message = "出生日期不能为空")
    private String birthday;

    //身份证上的地址
    private String address;

    /**
     * 证件号码
     */
    @ApiModelProperty(value = "证件号码", required = false, dataType = "String")
    @NotBlank(message = "证件号码不能为空")
    private String certificatesNumber;

    //签发机关
    private String issuedAt;



    /**
     * 身份证有效期 开始时间
     */
    @ApiModelProperty(value = "身份证有效期至", required = false, dataType = "String")
    @NotNull(message = "身份证有效期至不能为空")
    private String effectedDate;

    /**
     * 身份证有效期 结束时间
     */
    @ApiModelProperty(value = "身份证有效期至", required = false, dataType = "String")
    @NotNull(message = "身份证有效期至不能为空")
    private String expiredDate;

    //证件类型
    private Integer sfType;

    //图片编码
    private String  picture;

    /**
     * 国籍
     */
    @ApiModelProperty(value = "国籍", required = false, dataType = "String")
    @NotNull(message = "国籍不能为空")
    private String country;

    /**
     * 学习类别（初次申领：0，增驾：1）
     */
    @ApiModelProperty(value = "学习类别（初次申领：0，增驾：1）", required = false, dataType = "Integer")
    @NotNull(message = "学习类别不能为空")
    private DrivingType studyType= DrivingType.first;

    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号", required = false, dataType = "String")
    @NotNull(message = "手机号不能为空")
    @Pattern(regexp = ValidatorUtils.REGEX_MOBILE,message ="请输入有效的手机号")
    private String phone;

    /**
     * 准驾车型(申请车型ID)(来自字典表)
     */
    @ApiModelProperty(value = "准驾车型(申请车型ID)至", required = false, dataType = "Long")
    private long carId;

    /**
     * 暂住证编号
     */
    @ApiModelProperty(value = "暂住证编号", required = false, dataType = "String")
    private String stayAddreeNumber;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱", required = false, dataType = "String")
    private String email;


    /**
     * 住所详细地址
     */
    @ApiModelProperty(value = "住所详细地址", required = false, dataType = "String")
    private String addressDetailed;

    /**
     * 报名来源
     */
    @ApiModelProperty(value = "报名来源", required = false, dataType = "String")
    private String registeredSource;



    /**
     * 登记住所详细地址
     */
    @ApiModelProperty(value = "登记住所详细地址", required = false, dataType = "String")
    private String registeredResidence;

    /**
     * 学员来源(1：本地   2：外地）
     */
    @ApiModelProperty(value = "学员来源(1：本地   2：外地）", required = false, dataType = "Integer")
    private Residence studentSource= Residence.local;

    /**
     * 学费
     */
    @ApiModelProperty(value = "学费", required = false, dataType = "BigDecimal")
    private BigDecimal registeredTuition;

    /**
     * 学员编号UUID
     */
    @ApiModelProperty(value = "学员编号UUID", required = false, dataType = "String")
    private String studentNumber;

    /**
     * 报名日期
     */
    @ApiModelProperty(value = "报名日期", required = false, dataType = "Date")
    private Date registeredTime;

    /**
     * 驾校ID
     */
    @ApiModelProperty(value = "驾校ID", required = false, dataType = "Long")
    private long driversId;

    /**
     * 推荐码
     */
    @ApiModelProperty(value = "推荐码", required = false, dataType = "String")
    private String referralCode;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", required = false, dataType = "String")
    private String reason;

    /**
     * 微信openid
     */
    @ApiModelProperty(value = "微信openid", required = false, dataType = "String")
    private String wechatOpenid;


    /**
     * 是否绑定微信号  （0：否  1：是）
     */
    @ApiModelProperty(value = "是否绑定微信号  （0：否  1：是）", required = false, dataType = "Integer")
    private BindingWechat isBindingWechat=BindingWechat.no;

    /**
     * 操作人ID
     */
    @ApiModelProperty(value = "操作人ID", required = false, dataType = "Long")
    private long operatorId;

    @ApiModelProperty(value = "提交给谁", required = false, dataType = "Integer")
    private Integer myState;//提交状态

    @ApiModelProperty(value = "驾校类型", required = false, dataType = "Integer")
    private Integer driversSchoolType;


    //////////照片/////////////
    @ApiModelProperty(value = "身份证头像", required = false, dataType = "String")
    private String sfz;

    @ApiModelProperty(value = "互联网面签协议", required = false, dataType = "String")
    private String mqb;

    @ApiModelProperty(value = "初学驾驶申请表", required = false, dataType = "String")
    private String cxjs;

    @ApiModelProperty(value = "增驾驾驶申请表", required = false, dataType = "String")
    private String zjjs;

    @ApiModelProperty(value = "指纹", required = false, dataType = "String")
    private String zw;

    @ApiModelProperty(value = "原驾驶证", required = false, dataType = "String")
    private String ljz;

    @ApiModelProperty(value = "制证照", required = false, dataType = "String")
    private String zzz;

    @ApiModelProperty(value = "培训记录", required = false, dataType = "String")
    private String pxjl;

    @ApiModelProperty(value = "学时证明", required = false, dataType = "String")
    private String xszm;

    @ApiModelProperty(value = "居住证照片", required = false, dataType = "String")
    private String zzpermit;

    @ApiModelProperty(value = "身份证正面", required = false, dataType = "String")
    private String idz;

    @ApiModelProperty(value = "身份证反面", required = false, dataType = "String")
    private String idf;

    @ApiModelProperty(value = "体检表", required = false, dataType = "String")
    private String healthForm;

    @ApiModelProperty(value = "现场照片", required = false, dataType = "String")
    private String scenePhotos;

    @ApiModelProperty(value = "提交表图片", required = false, dataType = "String")
    private String tjbtp;

    @ApiModelProperty(value = "身份证电子照片", required = false, dataType = "String")
    private String sfzdzz;

    @ApiModelProperty(value = "册表面签照", required = false, dataType = "String")
    private String zcbmqz;
    @ApiModelProperty(value = "所属辖区省", required = false, dataType = "Integer")
    private String provId_1;
    @ApiModelProperty(value = "所属辖区市", required = false, dataType = "Integer")
    private String cityId_1;
    @ApiModelProperty(value = "所属辖区 区", required = false, dataType = "Integer")
    private String areaId_1;
    @ApiModelProperty(value = "登记所 省", required = false, dataType = "Integer")
    private String provId_2;
    @ApiModelProperty(value = "登记所 市", required = false, dataType = "Integer")
    private String cityId_2;
    @ApiModelProperty(value = "所属辖区 区", required = false, dataType = "Integer")
    private String areaId_2;



}
